%%
%% This is file `setouterhbox.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% setouterhbox.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2005, 2006, 2007 by
%%    Heiko Oberdiek <oberdiek@uni-freiburg.de>
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3 of this license or (at your option) any later
%% version. The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% This Current Maintainer of this work is Heiko Oberdiek.
%% 
%% This work consists of the main source file setouterhbox.dtx
%% and the derived files
%%    setouterhbox.sty, setouterhbox.pdf, setouterhbox.ins, setouterhbox.drv,
%%    setouterhbox-example.tex, setouterhbox-test1.tex,
%%    setouterhbox-test2.tex.
%% 
\begingroup
  \catcode44 12 % ,
  \catcode45 12 % -
  \catcode46 12 % .
  \catcode58 12 % :
  \catcode64 11 % @
  \expandafter\let\expandafter\x\csname ver@setouterhbox.sty\endcsname
  \ifcase 0%
    \ifx\x\relax % plain
    \else
      \ifx\x\empty % LaTeX
      \else
        1%
      \fi
    \fi
  \else
    \catcode35 6 % #
    \catcode123 1 % {
    \catcode125 2 % }
    \expandafter\ifx\csname PackageInfo\endcsname\relax
      \def\x#1#2{%
        \immediate\write-1{Package #1 Info: #2.}%
      }%
    \else
      \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
    \fi
    \x{setouterhbox}{The package is already loaded}%
    \endgroup
    \expandafter\endinput
  \fi
\endgroup
\begingroup
  \catcode35 6 % #
  \catcode40 12 % (
  \catcode41 12 % )
  \catcode44 12 % ,
  \catcode45 12 % -
  \catcode46 12 % .
  \catcode47 12 % /
  \catcode58 12 % :
  \catcode64 11 % @
  \catcode123 1 % {
  \catcode125 2 % }
  \expandafter\ifx\csname ProvidesPackage\endcsname\relax
    \def\x#1#2#3[#4]{\endgroup
      \immediate\write-1{Package: #3 #4}%
      \xdef#1{#4}%
    }%
  \else
    \def\x#1#2[#3]{\endgroup
      #2[{#3}]%
      \ifx#1\@undefined
        \xdef#1{#3}%
      \fi
      \ifx#1\relax
        \xdef#1{#3}%
      \fi
    }%
  \fi
\expandafter\x\csname ver@setouterhbox.sty\endcsname
\ProvidesPackage{setouterhbox}%
  [2007/09/09 v1.7 Set hbox in outer horizontal mode (HO)]
\begingroup
  \catcode123 1 % {
  \catcode125 2 % }
  \def\x{\endgroup
    \expandafter\edef\csname setouterhboxAtEnd\endcsname{%
      \catcode35 \the\catcode35\relax
      \catcode64 \the\catcode64\relax
      \catcode123 \the\catcode123\relax
      \catcode125 \the\catcode125\relax
    }%
  }%
\x
\catcode35 6 % #
\catcode64 11 % @
\catcode123 1 % {
\catcode125 2 % }
\def\TMP@EnsureCode#1#2{%
  \edef\setouterhboxAtEnd{%
    \setouterhboxAtEnd
    \catcode#1 \the\catcode#1\relax
  }%
  \catcode#1 #2\relax
}
\TMP@EnsureCode{40}{12}% (
\TMP@EnsureCode{41}{12}% )
\TMP@EnsureCode{44}{12}% ,
\TMP@EnsureCode{45}{12}% -
\TMP@EnsureCode{46}{12}% .
\TMP@EnsureCode{47}{12}% /
\TMP@EnsureCode{58}{12}% :
\TMP@EnsureCode{60}{12}% <
\TMP@EnsureCode{61}{12}% =
\TMP@EnsureCode{62}{12}% >
\TMP@EnsureCode{96}{12}% `
\newbox\setouterhboxBox
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname RequirePackage\endcsname\relax
  \input infwarerr.sty\relax
\else
  \RequirePackage{infwarerr}[2007/09/09]%
\fi
\edef\setouterhboxFailure#1#2{%
  \expandafter\noexpand\csname @PackageError\endcsname
      {setouterhbox}{#1}{#2}%
}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname lastnodetype\endcsname\relax
  \catcode`T=9 % ignore
  \catcode`E=14 % comment
\else
  \catcode`T=14 % comment
  \catcode`E=9 % ignore
\fi
\def\setouterhboxRemove{%
E \ifnum\lastnodetype<11 %
E   \else
E   \ifnum\lastnodetype>13 %
E   \else
      \unskip\unkern\unpenalty
E     \expandafter\expandafter\expandafter\setouterhboxRemove
E   \fi
E \fi
}%
\def\setouterhbox#1{%
  \begingroup
    \def\setouterhboxNum{#1}%
    \setbox0\vbox\bgroup
T     \kern.123pt\relax % marker
T     \kern0pt\relax % removed by \setouterhboxRemove
      \begingroup
        \everypar{}%
        \noindent
}
\def\endsetouterhbox{%
      \endgroup
      \pretolerance-1 %
      \tolerance10000 %
      \hsize\maxdimen
      \parfillskip 0pt plus 1filll\relax
      \leftskip0pt\relax
      \rightskip0pt plus 1fil\relax
      \everypar{}%
      \kern0pt%
      \endgraf
      \setouterhboxRemove
E     \ifnum\lastnodetype=1 %
E       \global\setbox\setouterhboxBox\lastbox
E       \loop
E         \setouterhboxRemove
E       \ifnum\lastnodetype=1 %
E         \setbox0=\lastbox
E         \global\setbox\setouterhboxBox=\hbox{%
E           \unhbox0 %
E           \unskip
E           \unhbox\setouterhboxBox
E         }%
E       \repeat
E     \else
E       \setouterhboxFailure{%
E         Something is wrong%
E       }{%
E         Could not find expected line.%
E         \MessageBreak
E         (\string\lastnodetype: \number\lastnodetype, expected: 1)%
E       }%
E     \fi
E     \setouterhboxRemove
T     \global\setbox\setouterhboxBox\lastbox
T     \loop
T       \setouterhboxRemove
T       \setbox0=\lastbox
T     \ifcase\ifvoid0 1\else0\fi
T       \global\setbox\setouterhboxBox=\hbox{%
T         \unhbox0 %
T         \unskip
T         \unhbox\setouterhboxBox
T       }%
T     \repeat
T     \ifdim.123pt=\lastkern
T     \else
T       \setouterhboxFailure{%
T         Something is wrong%
T       }{%
T         Unexpected stuff was detected before the line.%
T       }%
T     \fi
T   \egroup
T   \ifcase \ifnum\wd0=0 \else 1\fi
T           \ifdim\ht0=.123pt \else 1\fi
T           \ifnum\dp0=0 \else 1\fi
T           0 %
E     \ifnum\lastnodetype=-1 %
      \else
        \setouterhboxFailure{%
            Something is wrong%
        }{%
            After fetching the line there is more unexpected stuff.%
E           \MessageBreak
E           (\string\lastnodetype: \number\lastnodetype, expected: -1)%
        }%
      \fi
E   \egroup
  \expandafter\endgroup
  \expandafter\setouterhboxFinish\expandafter{%
    \number\setouterhboxNum
  }%
}
\def\setouterhboxCurr{setouterhbox}
\def\setouterhboxLast#1{%
  \setbox#1\hbox{%
    \unhbox\setouterhboxBox
    \unskip % remove \rightskip glue
    \unskip % remove \parfillskip glue
    \unpenalty % remove paragraph ending \penalty 10000
    \unkern % remove explicit kern inserted above
  }%
}
\def\setouterhboxFinish#1{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname @currenvir\endcsname\setouterhboxCurr
    \aftergroup\setouterhboxLast
    \aftergroup{%
    \setouterhboxAfter #1\NIL
    \aftergroup}%
  \else
    \setouterhboxLast{#1}%
  \fi
}
\def\setouterhboxAfter#1#2\NIL{%
  \aftergroup#1%
  \ifx\\#2\\%
  \else
    \setouterhboxReturnAfterFi{%
      \setouterhboxAfter#2\NIL
    }%
  \fi
}
\long\def\setouterhboxReturnAfterFi#1\fi{\fi#1}
\catcode69=11\relax % E
\catcode84=11\relax % T
\begingroup
  \def\x{LaTeX2e}%
\expandafter\endgroup
\ifx\x\fmtname
\else
  \setouterhboxAtEnd
  \expandafter\endinput
\fi
\DeclareOption{hyperref}{%
  \long\def\Hy@setouterhbox#1#2{%
    \setouterhbox{#1}#2\endsetouterhbox
  }%
}
\ProcessOptions\relax
\setouterhboxAtEnd
\endinput
%%
%% End of file `setouterhbox.sty'.
